// 创建请求工具
const baseURL = 'http://localhost:8080/api'

// 请求拦截器
const request = (options: {
  url: string
  method?: string
  data?: any
  params?: Record<string, string>
  headers?: Record<string, string>
}) => {
  // 设置请求头
  const headers = {
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest',
    'auth': '42',  // 硬编码auth值
    ...options.headers
  }
  
  // 处理 URL 参数
  let url = baseURL + options.url
  if (options.params) {
    const queryString = Object.entries(options.params)
      .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
      .join('&')
    url += `?${queryString}`
  }
  
  // 打印完整请求信息
  console.log('完整请求信息:', {
    url,
    method: options.method,
    data: options.data,
    headers: options.headers || headers
  })
  
  // 发送请求
  return fetch(url, {
    method: options.method || 'GET',
    headers: options.headers || headers,
    body: options.data ? JSON.stringify(options.data) : undefined,
    credentials: 'include'
  }).then(async (res) => {
    const data = await res.json()
    
    // 请求成功
    if (res.status === 200) {
      // 业务状态判断
      if (data.code === 200) {
        return data
      } else {
        // 业务错误
        throw new Error(data.message || '请求失败')
      }
    } else if (res.status === 401) {
      // 未授权错误
      throw new Error('未授权访问')
    } else {
      // 其他错误
      throw new Error('服务器错误')
    }
  }).catch((err) => {
    console.error('请求失败:', err)
    throw err
  })
}

export default request